//
//  NSAttributedString.DocumentAttributeKey.swift
//  Documentation
//
//  Created by Toj on 3/5/24.
//

import Foundation

extension NSAttributedString.DocumentAttributeKey {

    @available(iOS 7.0, *)
    /// 该选项中的关键字可以指定用于解释内容的文档类型
    /// 文档属性可以包含该键, 用于指示用于读取内容的实际格式
    /// 该键指定生成数据的格式
    public static let documentType: NSAttributedString.DocumentAttributeKey

    @available(iOS 7.0, *)
    /// NSNumber包含整数
    /// 指定文件的NSStringEncoding;
    /// 纯文本的默认值是默认编码.
    /// 选项中的这个键可以指定用于读取数据的字符串编码.
    /// 文档属性可以包含所使用的实际编码.
    /// 该值用于生成纯文本数据.
    public static let characterEncoding: NSAttributedString.DocumentAttributeKey

    @available(iOS 7.0, *)
    /// NSDictionary包含应用于普通文件的属性.
    /// 文档属性可以包含指示所使用的实际属性的键
    public static let defaultAttributes: NSAttributedString.DocumentAttributeKey

    /// NSRTFTextDocumentType
    /// NSRTFDTextDocumentType文档属性
    /// 它们是读/ 写方法使用的文档属性.
    /// 文件尺寸
    @available(iOS 7.0, *)
    /// NSValue包含CGSize(以点为单位)
    public static let paperSize: NSAttributedString.DocumentAttributeKey

    @available(iOS 7.0, *)
    /// NSValue包含UIEdgeInsets
    public static let paperMargin: NSAttributedString.DocumentAttributeKey

    @available(iOS 7.0, *)
    /// NSValue包含CGSize(以点为单位)
    public static let viewSize: NSAttributedString.DocumentAttributeKey

    @available(iOS 7.0, *)
    /// NSNumber包含浮点值(100 == 100%缩放)
    public static let viewZoom: NSAttributedString.DocumentAttributeKey

    @available(iOS 7.0, *)
    /// NSNumber包含整数; 0: 正常; 1: 页面布局
    public static let viewMode: NSAttributedString.DocumentAttributeKey

    // 文件设置
    // 它们是读/ 写方法使用的文档属性.
    @available(iOS 7.0, *)
    /// NSNumber包含整数;
    /// 如果缺少, 则为0.
    /// 0 <=  读写;
    /// >= 1, 只读;
    /// 请注意, 这与文件上的文件系统保护无关, 而是与文件应该如何显示给用户有关
    public static let readOnly: NSAttributedString.DocumentAttributeKey

    @available(iOS 7.0, *)
    /// UIColor, 表示整个文档的页面背景色
    public static let backgroundColor: NSAttributedString.DocumentAttributeKey

    @available(iOS 7.0, *)
    /// NSNumber包含浮点值(0=关闭; 1=全连字符)
    public static let hyphenationFactor: NSAttributedString.DocumentAttributeKey

    @available(iOS 7.0, *)
    /// NSNumber包含浮点值, 表示文档范围内的默认制表符间隔, 以点为单位
    /// 字典的NSArray. 每个字典描述一个布局方向部分.
    /// 字典可以有两个属性:NSTextLayoutSectionOrientation和NSTextLayoutSectionRange.
    /// 当部分之间有间隙时, 它被假定有NSTextLayoutOrientationHorizontal.
    public static let defaultTabInterval: NSAttributedString.DocumentAttributeKey

    /// 文件文本缩放和Cocoa版本
    /// 它们是读/写方法使用的文档属性.
    @available(iOS 7.0, *)
    public static let textLayoutSections: NSAttributedString.DocumentAttributeKey

    @available(iOS 13.0, *)
    // @"TextScaling", 上面声明的文本缩放类型之一.
    /// 只影响RTF文档.
    /// 对于读取方法, 这表示在返回的带属性字符串中使用的文本缩放类型.
    /// 对于write方法, 该属性可以以两种不同的方式使用:
    /// (1)只传递此属性将覆盖文档中的文本缩放元数据, 但不会对文档中的字体大小进行任何转换, 或者
    /// (2)同时传递此属性和NSSourceTextScalingDocumentAttribute
    /// 将文档中的字体大小从源文本缩放类型转换为该属性指定的文本缩放类型.
    public static let textScaling: NSAttributedString.DocumentAttributeKey

    @available(iOS 13.0, *)
    /// @"SourceTextScaling", 上面声明的文本缩放类型之一.
    /// 只影响RTF文档.
    /// 对于写入方法, 这表示将用作转换基本类型的属性字符串中的文本缩放类型.
    /// 当将带有属性的字符串写入RTF时, 将其与NSTextScalingDocumentAttribute结合使用, 在文本缩放之间转换字体点大小.
    /// 这个属性是可选的, 除非指定了NSTextScalingDocumentAttribute, 否则它什么也不做.
    public static let sourceTextScaling: NSAttributedString.DocumentAttributeKey

    @available(iOS 13.0, *)
    /// @“CocoaRTFVersion”, 包含整数的NSNumber.
    /// 存储创建文件时使用的Cocoa版本. NSNumber包含float.
    /// 缺少此值表示文件未被标记为由Cocoa或其前身创建.
    ///// 小于100的值是mac OS X之前的;
    ///// 100是Mac OS X 10.0和10.1;
    ///// 102是Mac OS X 10.2和10.3;
    ///// 大于102的值对应10.4 ~ 10.14 系统的NSAppKitVersionNumber值.
    /// 从iOS 13和macOS 10.15开始, 该版本号不再与任何单个系统框架版本一对一对应, 而是保证随着每个操作系统版本单调增加.
    public static let cocoaVersionDocumentAttribute: NSAttributedString.DocumentAttributeKey
}
